/* Copyright (c) [2024] [ylc]. Licensed under Apache-2.0 License. */

#include "dis188.h"

DT_SEG_T DT_SEG={0};
u8 dt_buf[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//数码管 P00 P01 P05 P25 P26
void dis188_init(void)
{
	DIS1_IN;DIS2_IN;DIS3_IN;DIS4_IN;DIS5_IN;
}

//中断扫描
void dis188_500us(void)
{
	static u8 index;
	index++;
	if(index>=5)index=0;
	
	DIS1_IN;DIS2_IN;DIS3_IN;DIS4_IN;DIS5_IN;
	
	switch(index){		//查表
		case 0:{
			DIS1_L;
			if(DT_SEG.led.B3)DIS2_H;
			if(DT_SEG.led.D3)DIS3_H;
			if(DT_SEG.led.F3)DIS4_H;
			if(DT_SEG.led.G3)DIS5_H;
		}break;
		case 1:{
			DIS2_L;
			if(DT_SEG.led.A3)DIS1_H;
			if(DT_SEG.led.B2)DIS3_H;
			if(DT_SEG.led.D2)DIS4_H;
			if(DT_SEG.led.E2)DIS5_H;
		}break;
		case 2:{
			DIS3_L;
			if(DT_SEG.led.C3)DIS1_H;
			if(DT_SEG.led.A2)DIS2_H;
			if(DT_SEG.led.C2)DIS4_H;
			if(DT_SEG.led.F2)DIS5_H;
		}break;
		case 3:{
			DIS4_L;
			if(DT_SEG.led.E3)DIS1_H;
			if(DT_SEG.led.C1)DIS2_H;
			if(DT_SEG.led.B1)DIS3_H;
			if(DT_SEG.led.G2)DIS5_H;
		}break;
		case 4:{
			DIS5_L;
			if(DT_SEG.led.L2)DIS2_H;
			if(DT_SEG.led.L1)DIS3_H;
		}break;
		default:{
			index=0;
		}break;
	}
}

void dis188_display(u16 num,u8 unit)
{
	u8 tmp;
	u8 i;
	
	
	DT_SEG.buf[0]=0;
	DT_SEG.buf[1]=0;
	DT_SEG.buf[2]=0;
	DT_SEG.buf[3]=0;
	for(i=0;i<3;i++){
		tmp=num%10;
		DT_SEG.buf[2-i]=dt_buf[tmp];
		num/=10;
		if(num==0){
			if(unit){
				if(2-i-1>=0)
				DT_SEG.buf[2-i-1]=0x40;	//负号
			}
			break;//高位0不显示
		}
	}
	
	DT_SEG.led.L1=1;	//两个符号全亮
	DT_SEG.led.L2=1;
}

